Several methods are known for improving the reliability of data transmitted through a telecommunications network. Parity checking includes the use of parity bits which are appended to bytes, blocks or frames of digital transmissions and allow the determination of some types of transmission errors. Another technique is to send identical data streams along two or more separate paths and then to select the best of the received signals or to combine the received signals in some way to obtain a higher quality result. For instance, it is known from U.S. Pat. No. 4,953,197 to use two receiving antennae in parallel and quality data and parity information are checked for each data word of the two signals received from the antennae and the best signal selected. U.S. Pat. No. 5,268,909, U.S. Pat. No. 5,406,563, U.S. Pat. No. 5,436,915, and U.S. Pat. No. 5,422,647 all provide methods of error checking of two or more transmissions of the same information down different paths of the system.
Yet another technique is known as ARQ or automatic repeat requests in which a byte, frame or block of data is retransmitted automatically when an error is detected therein in the receiver. Examples of such systems are “stop and wait” or “continuous” ARQ. Further, general types of ARQ are known in which not all of the byte, block or frame is re-transmitted but only some additional information which allows the erroneous signal to be corrected, e.g. using forward error correction techniques. This is sometimes known as ARQ with incremental forward error correction.
Forward error correction (FEC) is known in which errors in the transmitted digital signal are corrected without re-transmitting the same signal. This requires a more complex type of error coding in which sufficient additional correction bits are provided that the original message can be reconstructed from a signal transmitted with errors. Examples are the Hagelberger, Bose-Chaudhuri, Hamming, and convolutional and block codes. The number of additional bits necessary to provide reliable correction can be high which reduces the throughput of the system drastically. However, where a high level of quality is required and retransmission cannot be tolerated, the methods are most useful. To reduce the reduction in capacity caused by the additional correction bits the number of bits may be reduced by “puncturing” in which a certain proportion of bits from the forward error coded signal are removed. This reduces the quality and reliability of the error correction but increases the data rate.
Combinations of the above are also used. For example, U.S. Pat. No. 5,657,325 describes a combined ARQ and FEC technique in which a signal is error coded, punctured and then transmitted over a first radio channel from one antenna to a receiver and on receiving a negative acknowledgment from the receiver (the signal cannot be corrected properly at the receiver), the relevant punctured bits are sent via a second antenna, i.e. via a separate channel which may have better transmission quality or may introduce different or less troublesome errors. The disadvantage of this technique is that even retransmission of only the punctured bits introduces temporal latency into the transmission which is often unacceptable, e.g. in voice transmissions in which no delay can be tolerated. Further, it is not possible to reconstruct the complete message from the punctured bits alone and the first message must always be used in the reconstruction attempt. It is therefore possible that if the originally received message contains very many errors it is not possible to reconstruct an accurate copy of the transmitted message.
Cellular telecommunications systems often include some form of compression of voice messages, e.g. a Vector Sum Excited Linear Prediction (VSELP) speech coder, convolutional coding for error protection, some form of modulation, e.g. differential quadrature phase shift keying (QPSK) modulation, and some form of access scheme, e.g. a time division, multiple access (TDMA) scheme or a Code Division Multiple Access (CDMA) scheme employing a frame subdivided into a number of time slots per carrier frequency.
In one known standardized system the error protection scheme utilizes the well known half rate convolutional channel encoder. The half rate convolutional channel encoder adds redundancy to the compressed speech data by using a shift register, generating two output bits for every input bit, and multiplexing the output bits to form the output. The generation of each output bit is done by a weighted modulo 2 sum of the input bit and the shift register contents according to a predefined generator polynomial. The number of memory elements in the shift register plus one is referred to as the constraint length of the convolutional coder. The initial state of the shift register is zeroed out, and the final state is also guaranteed to be zero by flushing it with five tail or flush bits of “0” after every input block of compressed speech data.
The VSELP speech codec puts out 159 compressed speech bits every 20 ms. These bits are divided into two classes. Class 1 bits are bits that are perceptually more significant and therefore require error protection. This is accomplished by the half rate convolutional channel codec with constraint length 6. Class 2 bits are bits that are not as significant as their Class 1 counterparts and are given no error protection. There are 77 Class 1 bits and 82 Class 2 bits. Among the Class 1 bits, there are a few bits that are perceptually the most significant, and it is important that they have error detection capability as well. This is accomplished by using a 7-bit cyclic redundancy check (CRC) over the twelve most perceptually significant bits. The 77 Class 1 bits, the 7 CRC bits, and the 5 tail bits are fed into the convolutional encoder to generate 178 coded bits. These are then fed along with the Class 2 bits into an interleaving array of dimension 26×10, interleaved row-wise with the interleaving array of the previous 20 ms frame, and transmitted row-wise after interleaving.
At the receiving station, de-interleaving is first accomplished to yield the 26×10 array of coded Class 1 and Class 2 bits of the previous 20 ms VSELP frame. After extracting the 178 coded Class 1 bits, the 77 Class 1 bits and 7 CRC bits are decoded using the Viterbi algorithm, which is a special case of dynamic programming. The locally generated 7 CRC bits are compared to the received 7 CRC bits to provide a bad frame indication to the VSELP speech decoder. The error correcting capacity can be increased by increasing the constraint length, but this comes with an exponential increase in cost or complexity of the Viterbi decoder. Known in the art in the use of forward-error-correction that includes convolutional encoding in the transmission of encoded digital data over a noisy channel from a transmitter to a receiver is a branch metric computer for a Viterbi-algorithm based convolutional decoder. The Viterbi Algorithm is used very commonly to decode a convolutionally encoded sequence of bits transmitted over a noisy channel. In the heart of the Viterbi algorithm is a series of repetitive add-compare-select operations which accept as input certain metrics (termed branch metrics) computed on each received symbol from the demodulator. Viterbi coders and decoders as well as convolutional coding are described in “Mobile Radio Communications”, by Raymond Steele, Pentech Press, 1992.
It is an object of the present invention to provide a telecommunications system as well as a receiver for the system and a method of operating the system and the receiver which improves the quality of received signals.